Arduino-তে attachInterrupt() এবং detachInterrupt() ফাংশন দুটি ব্যবহার করা হয় একটি নির্দিষ্ট ইন্টারাপ্টের মাধ্যমে বোর্ডের আউটপুট বা কার্যক্রম নিয়ন্ত্রণ করার জন্য। ইন্টারাপ্ট হল এমন একটি প্রক্রিয়া যা বোর্ডের একটি নির্দিষ্ট ইভেন্ট ঘটলে সাড়া দেয়। এই ফাংশনগুলো দিয়ে ইন্টারাপ্ট চালু এবং বন্ধ করা হয়।
attachInterrupt() ফাংশন ব্যবহার করে Arduino বোর্ডে একটি ইন্টারাপ্টের জন্য একটি ফাংশন সংযুক্ত করা হয়। এটি বোর্ডের একটি পিনের উপর একটি নির্দিষ্ট ইভেন্ট ঘটলে নির্দিষ্ট ফাংশনটি কল করে।
attachInterrupt(digitalPinToInterrupt(pin), ISR, mode);
pin
: ইন্টারাপ্ট পিন, যা সাধারণত ডিজিটাল পিন।ISR
: ইন্টারাপ্ট সার্ভিস রুটিন (ISR) নামক ফাংশন যা ইন্টারাপ্ট ঘটে গেলে কল করা হবে।mode
: ইন্টারাপ্টের ট্রিগার মোড, যা হতে পারে:RISING
: পিনের মান পরিবর্তন হলে যখন এটি উচ্চে ওঠে।FALLING
: পিনের মান পরিবর্তন হলে যখন এটি নীচে নামে।CHANGE
: পিনের মান পরিবর্তন হলে।detachInterrupt() ফাংশন ব্যবহার করে একটি নির্দিষ্ট পিনের জন্য সংযুক্ত ইন্টারাপ্ট বন্ধ করা হয়। এটি বোর্ডকে ইন্টারাপ্ট ট্রিগার করার সময় নির্দিষ্ট ফাংশনটি আর কল করবে না।
detachInterrupt(digitalPinToInterrupt(pin));
pin
: যে পিনের জন্য ইন্টারাপ্টটি বন্ধ করতে হবে।নিচে একটি উদাহরণ দেওয়া হলো যেখানে একটি বোতাম প্রেসের মাধ্যমে LED চালু এবং বন্ধ করা হয়েছে।
const int buttonPin = 2; // বোতাম পিন
const int ledPin = 13; // LED পিন
volatile bool ledState = LOW; // LED এর অবস্থা
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP); // বোতাম পিন ইনপুট হিসেবে কনফিগার করা
attachInterrupt(digitalPinToInterrupt(buttonPin), toggleLED, FALLING); // ইন্টারাপ্ট সংযুক্ত করা
}
void loop() {
digitalWrite(ledPin, ledState); // LED এর অবস্থা আপডেট করা
}
void toggleLED() {
ledState = !ledState; // LED এর অবস্থা পাল্টানো
}
volatile
: এটি ব্যবহৃত হয় যাতে ISR ভেরিয়েবলটি মূল প্রোগ্রামের সাথে সঠিকভাবে সিঙ্ক্রোনাইজ থাকে। ISR ফাংশনের মধ্যে এই ভেরিয়েবলটি পরিবর্তন করা হয়।attachInterrupt()
: বোতাম প্রেস হলে toggleLED()
ফাংশনটি কল করবে।detachInterrupt()
: এই উদাহরণে ব্যবহৃত হয়নি, কিন্তু এটি বোতামের জন্য ইন্টারাপ্ট বন্ধ করার জন্য ব্যবহার করা যেতে পারে যখন বোতাম আর প্রেস করা হচ্ছে না।delay()
বা দীর্ঘকালীন কোড ব্যবহার করা উচিত নয়, কারণ এটি অন্যান্য কার্যক্রমকে ব্যাহত করতে পারে।attachInterrupt() এবং detachInterrupt() ফাংশন Arduino প্রোগ্রামে ইন্টারাপ্ট ভিত্তিক কাজের জন্য অত্যন্ত কার্যকর। এগুলো ব্যবহার করে দ্রুত সাড়া দেওয়ার ক্ষমতা বাড়ানো যায় এবং বিভিন্ন প্রোজেক্টে কার্যকারিতা উন্নত করা যায়।
common.read_more